namespace FIREFLYX {
    /** 画多个点 */
    export class DrawMulPoint implements IExample {
        public Init(canvas: HTMLCanvasElement): void {
            let gl = canvas.getContext("webgl2");
            let vs = `#version 300 es
            in vec4 a_Position; //vec 是有默认值的 (0,0,0,1)
            void main() {
                gl_Position = a_Position;
                gl_PointSize = 20.0;   //只有绘制点时才起作用
            }
            `;

            let fs = `#version 300 es
                precision highp float;
                out vec4 color;
                void main(){
                    color = vec4(1.0,0.0,0.0,1.0);
                }
            `;

            //init Shaders
            let sp = InitShader(gl, vs, fs);
            //使用 gl 程序
            gl.useProgram(sp);

            //set of variables
            //获取 a_Position 内存地址
            let aPositionAddr = gl.getAttribLocation(sp, "a_Position");
            //创建缓冲区对象
            let aPosiotnBuf = gl.createBuffer();
            //绑定缓冲区对象 到 指定类型目标
            gl.bindBuffer(gl.ARRAY_BUFFER, aPosiotnBuf);
            //传入数据到 缓冲区对象
            // let data = new Float32Array([0  ,  0.5, 0 , 1 ,
            //                             -0.5, -0.5, 0 , 1 ,
            //                             0.5, -0.5, 0 , 1 ]);
            let data = new Float32Array([0, -0.5, 0.5,]);
            gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
            //告诉显卡从当前绑定的缓冲区（bindBuffer()指定的缓冲区）中读取顶点数据 (怎么去读取数据)
            gl.vertexAttribPointer(aPositionAddr, 1, gl.FLOAT, false, 0, 0);  //数据不够时会填充默认值
            //连接启用  分配个 变量的 缓冲区对象
            gl.enableVertexAttribArray(aPositionAddr);

            //绘制
            gl.drawArrays(gl.POINTS, 0, 3);   // count 超区域也不会报错
        }

    }
}